package com.lyf.boot.modules.system.dao;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lyf.boot.base.system.dao.BaseSysUserDao;
import com.lyf.boot.base.system.entity.SysRole;
import com.lyf.boot.modules.index.entity.ProfileVo;
import com.lyf.boot.modules.system.entity.dto.SysUserPageDto;
import com.lyf.boot.modules.system.entity.vo.SysUserVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author Luyufan
 * @date 2023/7/7 9:47
 */
@Repository
public interface SysUserDao extends BaseSysUserDao {

    ProfileVo selectUserProfile(Long userId);

    /**
     * 分页查询系统用户
     * @author Luyufan
     * @date 2023/7/7 9:49
     * @param page
     * @param dto
     * @return Page<SysUserVo>
     */
    Page<SysUserVo> selectSysUserPage(Page<SysUserVo> page, @Param("dto") SysUserPageDto dto);

    /**
     * 根据用户id查询用户信息
     * @author Luyufan
     * @date 2023/8/14 10:20
     * @param userId
     * @return SysUserVo
     */
    SysUserVo selectSysUserById(Long userId);

    /**
     * 查询用户所有角色
     * @author Luyufan
     * @date 2023/8/24 16:17
     * @param userId
     * @return List<String>
     */
    List<String> selectUserRoleCode(Long userId);

    /**
     * 查询用户所有权限
     * @author Luyufan
     * @date 2023/8/24 16:18
     * @param userId
     * @return List<String>
     */
    List<String> selectUserPermission(Long userId);

    /**
     * 查询用户的角色
     * @author Luyufan
     * @date 2023/8/24 16:40
     * @param userId
     * @return List<SysRole>
     */
    List<SysRole> selectUserRole(Long userId);
}
